@use 'sass:color';
@use 'sass:meta';
@use 'sass:map';
@use '../core/tokens/m2-utils';
@use '../core/tokens/m3-utils';

// Tokens that can't be configured through Angular Material's current theming API,
// but may be in a future version of the theming API.
//
// Tokens that are available in MDC, but not used in Angular Material should be mapped to `null`.
// `null` indicates that we are intentionally choosing not to emit a slot or value for the token in
// our CSS.
@function get-unthemable-tokens() {
  $height: 4px;

  @return (
    // The height of the progress bar. `active-indicator-height` applies to the
    // bar and `track-height` applies to the track.
    progress-bar-active-indicator-height: $height,
    progress-bar-track-height: $height,
    progress-bar-track-shape: 0,
  );
}

// Tokens that can be configured through Angular Material's color theming API.
@function get-color-tokens($theme, $color-variant) {
  $system: m2-utils.get-system($theme);
  $system: m3-utils.replace-colors-with-variant($system, primary, $color-variant);

  @return (
    progress-bar-active-indicator-color: map.get($system, primary),
    progress-bar-track-color: if(
        meta.type-of(map.get($system, primary)) == color,
        color.adjust(map.get($system, primary), $alpha: -0.75),
        map.get($system, primary)
    )
  );
}

// Tokens that can be configured through Angular Material's typography theming API.
@function get-typography-tokens($theme) {
  @return ();
}

// Tokens that can be configured through Angular Material's density theming API.
@function get-density-tokens($theme) {
  @return ();
}
